package biz_struct

import "fmt"

// MyInterface 定义一个接口, 如果有结构需要实现全部接口中的方法，不然编译报错
type MyInterface interface {
	// GetName 定义方法名
	GetName() string
	// GetAge 定义方法名
	GetAge() int
	// SetAge 定义方法名
	SetAge(age int) int
	// FunctionA 定义方法名
	FunctionA(parma interface{}) interface{}
}

// GetName 接口实现类
func (person *Person) GetName() string {
	fmt.Println("person结构体实现接口GetName的方法", person)
	return person.Name
}

// GetAge 接口实现类
func (person *Person) GetAge() int {
	fmt.Println("person结构体实现接口GetAge的方法", person)
	return person.Age
}

// SetAge 接口实现类
func (person *Person) SetAge(age int) int {
	fmt.Println("person结构体实现接口SetAge的方法, 原始值", person.Age)
	person.Age = age
	fmt.Println("person结构体实现接口SetAge的方法, 修改后的值", person.Age)
	return person.Age
}

// FunctionA 接口实现
func (person *Person) FunctionA(parma interface{}) interface{} {
	if parma == nil {
		panic("implement functionA, the parma is nil")
	}
	return parma
}
